<?php namespace Common\Model;
/*
 * 文章管理模型
 * */
use Hdphp\Model\Model;
 class Article extends  Model{
	//数据表
    protected $table ="article";	
	//自动验证
	protected $validate =array(
     array("title","required","标题不能为空",3,3),
     array("author","required","作者不能为空",3,3),
	 array("category_cid","required","请选择分类",3,3),
	);
	//自动完成
	protected $auto =array(
//array(表单字段名,处理方法,方法类型,验证条件,处理时间) 
	   array("sendtime","time","function",3,1),
	   array("updatetime","time","function",3,2),
	   //自定义方法处理
	   array("user_uid","userUid","method",3,1,),
	   array("thumb","image","method",3,3),
	);
	/*自定义完成,自定义方法
	 * 为了把user_uid自动提交到数据库对应的字段
	 * */
	public function userUid()
	{
		return $_SESSION['uid'];
	}
	/*
	 * 自定义缩略图
	 * */
	 public function image(){
	 	//这个为编辑文章写的
	 	//如果隐藏域里面的thumb,直接把隐藏域里面的路径返出
	 	if(isset($_POST['thumb'])){
	 		return $_POST['thumb'];
	 	}
	 	//设置上传路径
	 	$path = "Upload/".date("ymd");
		$file = Upload::type('jpg,png,txt')->path($path)->size(200000)->make();
		//如果有文件上传
		if($file){//有文件上传
			//缩略Image::thumb($file, $outFile, $thumbWidth, $thumbHeight, $thunbType);
			//参数：上传过来的图片路径|存储路径|缩略宽|缩略高|缩略方式
			//Upload/160516/thumb_16761463384179.jpg
		$thumbPath = Image::thumb($file[0]['path'],$path."/thumb_".$file[0]['basename'],200,200,5);
		return $thumbPath;
		}else{//没有文件上传
			return "";
		}
	 }
	 
	 /*
	  * 添加
	  * */
	public function store(){
		//实例化文章数据表
		$articleDataModel = new \Common\Model\ArticleData;
		//自动处理
		if(!$this->create()) return false;
		if(!$articleDataModel->create()){
			//把文章数据表的错误循序存在article的错误信息中，在article控制器中输入出来
			$this->error = $articleDataModel->getError();
			return false;
		}
		//上传错误判断
		if($_FILES['thumb']['error']!=4){
			//上传错误信息
			if($error = Upload::getError()){
				$this->error = $error;
				return false;
			}
		}
		//1.执行文章表添加
		 $aid = $this->add();
		 //p($aid);自动返回自增id
		 //2.执行标签表的添加
		 $articleTagModel = new \Common\Model\ArticleTag;
		 //循环添加
		 foreach(Q("post.tag_tid",array()) as $k => $v){
		 	$data = array(
			   "article_aid"=>$aid,
			   "tag_tid"=>$v,
			);
			$articleTagModel->add($data);
		}
		 //3.执行文章数据表]
		 //add添加的时候，添加的是模型中data属性当中的值
		 $articleDataModel->data['article_aid'] = $aid;
		 $articleDataModel->add();
        return true;
	}
	/*
	  * 编辑
	  * */
	public function edit($aid){
		//实例化文章数据表
		$articleDataModel = new \Common\Model\ArticleData;
		//自动处理
		if(!$this->create()) return false;
		if(!$articleDataModel->create()){
			//把文章数据表的错误循序存在article的错误信息中，在article控制器中输入出来
			$this->error = $articleDataModel->getError();
			return false;
		}
		//上传文件错误判断
		if(isset($_FILES['thumb'])&&$_FILES['thumb']['error']!=4){
				//上传错误信息
			if($error = Upload::getError()){
				$this->error = $error;
				return false;
			}
		}
		//1.执行文章表修改
		$this->save();
		//2.执行中间表的修改
		//实例化中间表
		 $articleTagModel = new \Common\Model\ArticleTag;
		 //先删除原来的数据再执行修改
		 $articleTagModel->where("article_aid",$aid)->delete();
		 //添加标签
		 foreach($_POST['tag_tid'] as $v){
		 	$data = array(
			   "article_aid"=>$aid,
			   "tag_tid"=>$v,
			);
			$articleTagModel->add($data);
		 }
		 //3.执行文章数据表的编辑
		 //再修改的时候可以使用以下两种都可以编辑成功
			//1）
			/*$data = array(
				"keywords"=>$_POST['keywords'],
				"des"=>$_POST['des'],
				"content"=>$_POST['content'],
			);
			$articleDataModel->where("article_aid",$aid)->update($data);*/
			//2）
		$articleDataModel->where("article_aid",$aid)->save();
		return true ;
	  }

	/*
	 * 彻底删除
	 * */
	public function deletes($aid){
	//删除标签表中的数据
	Db::table("article_tag")->where("article_aid",$aid)->delete();
	//删除文章数据表中的数据
	Db::table("article_data")->where("article_aid",$aid)->delete();
		//删除文章表中的数据
	$this->where("aid",$aid)->delete();	
	}
	
}
